package com.mall.b2c.service;

import java.math.BigDecimal;
import java.util.List;

import com.mall.b2c.bean.DeliveryMethodBean;
import com.mall.b2c.domain.delivery.DeliveryMethodDomain;
import com.mall.common.service.BaseService;

/**
 * Service接口 - 配送方式
 *
 * @author lzx
 */
public interface DeliveryMethodService extends BaseService<DeliveryMethodDomain, Long> {

    /**
     * 获取默认配送方式
     *
     * @return
     */
    DeliveryMethodDomain findDefault();

    /**
     * 设置默认配置方式
     *
     * @param id
     */
    void switchDefault(Long id);
    
    /**
     * 获取配送方式，排序（是否默认、priority）
     * @return
     */
    List<DeliveryMethodDomain> getDeliveryMethodList(Boolean isAvaliable);
    
    /**
     * 计算运费
     * @param receiverId 收货地址
     * @param methodId 配送方式
     * @param memberId 会员id
     * @param weight 重量
     * @return
     */
    BigDecimal calShipFee(Long receiverId, Long methodId, Long memberId, BigDecimal weight);

    /**
     * 获取可用的配送方式
     * @param receiverId 收货地址
     * @param memberId 会员id
     * @param weight 重量
     * @return
     */
    List<DeliveryMethodBean> getAvaliableDeliveries(Long receiverId, Long memberId, BigDecimal weight);
}